CKM_AES_GMAC
This section provides a summary of CKM_AES_GMAC.
Note
This mechanism is only available if you are using PTK 7.1.0 or newer with ProtectServer 3 HSM Firmware 7.01.00 or newer.
Supported operations
Operation | Support |
---|---|
Encrypt and Decrypt | No |
Sign and Verify | Yes |
SignRecover and VerifyRecover | No |
Digest | No |
Generate Key/Key-Pair | No |
Wrap and Unwrap | No |
Derive | No |
FIPS Mode support
Available in FIPS Mode | Restrictions in FIPS Mode |
---|---|
Yes | No |
Key size range (bytes) and parameters
Key size minimum/maximum | Value |
---|---|
Minimum | 16 |
FIPS Minimum | 16 |
Maximum | 32 |
Parameter
CK_GCM_PARAMS
Mechanism description
AES-GMAC is a mechanism for single and multiple-part signatures and verification described in NIST Special Publication 800-38D. GMAC is a special case of GCM that authenticates only the additional authenticated data (AAD) part of the GCM mechanism parameters. When GMAC is used with C_Sign or C_Verify, pData points to the AAD. GMAC does not use plaintext or ciphertext.
The signature produced by GMAC is also referred to as a tag.
The mechanism parameter, according to PKCS#11 2.40, is a 12 byte IV value and the tag size is a fixed 16 bytes.
The ProtectToolkit (PTK) implementation has a special feature to assist with compatibility with other implementations that use the CK_GCM_PARAMS
structure as the mechanism parameter.
If the CK_GCM_PARAMS
structure is passed as a parameter then:
-
The tag’s length is determined by the
CK_GCM_PARAMS
field ulTagBits. -
The IV length is determined by the
CK_GCM_PARAMS
field ulIvLen. -
If any pAAD and ulAADLen are both non zero, then the AAD value will be processed before any data passed in the C_SignUpdate call; that is, the AAD value to be signed can be passed in through the
CK_GCM_PARAMS
or the C_SignUpdate call (or both).
Otherwise the parameter is interpreted as the IV value and the tag size will be 16 bytes.
The software emulation does not accept a raw IV value and the CK_GCM_PARAMS
must be supplied by the application.
Constraints on key types and the length of data are summarized in the following table:
Function | Key type | Data length | Signature length |
---|---|---|---|
C_Sign | CKK_AES | < 2^64 | Determined by ulTagBits |
C_Verify | CKK_AES | < 2^64 | Determined by ulTagBits |
For this mechanism, the ulMinKeySize and ulMaxKeySize fields of the CK_MECHANISM_INFO
structure are 16, 26, and 32.
Return to ProtectToolkit-C mechanisms.